package com.loctek.importexport.mvp.presenter;

import com.loctek.importexport.App;
import com.loctek.importexport.base.BasePresenter;
import com.loctek.importexport.bean.LoginResponse;
import com.loctek.importexport.mvp.view.LoginView;

import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃  神兽保佑
 * 　　　　┃　　　┃  代码无bug
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━感觉萌萌哒━━━━━━
 * <p>
 * 作者：司海林
 * 邮箱：sihailin@sina.cn
 * 时间：2018/2/27
 * 描述：
 */
public class LoginPersenter extends BasePresenter<LoginView> {

    public LoginPersenter(App app) {
        super(app);
    }


    /**
     * @param username
     * @param password
     */
    public void login(String username, String password) {
        getView().showProgress();
        getAppComponent().getAPIService().login("login", username, password)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<LoginResponse>() {
                    @Override
                    public void onCompleted() {
                        if (isViewAttached())
                            getView().onCompleted();
                    }

                    @Override
                    public void onError(Throwable e) {
                        e.printStackTrace();
                        if (isViewAttached()) {
                            getView().onError(e);
                        }
                    }

                    @Override
                    public void onNext(LoginResponse response) {
                        if (response.isSuccess()) {
                            getApp().setToken(response.data.token);
                            getView().login(response);
                        } else {
                            getView().showMsg(response.getMessage());
                        }
                    }
                });
    }
}
